In the past, whenever it was desired to have a data processor repeat the execution of one or more instructions of a given program under selected conditions, the programmer had to construct an appropriate "software" loop. In general, such software loops consisted of the instructions to be repetitively executed, followed by a conditional branch instruction which tested for a selected condition. Typically, if the specified condition was not satisfied, the data processor branched back to the first instruction in the loop and again executed the "loop" of instructions. In these data processors, all of the instructions in the loop were fetched from memory each time the loop was repeated. This was true even in data processors which had instruction pipelines capable of retaining the entire loop of instructions.
In contrast to the general form of instruction loops, at least one data processor, the General Electric 600 Series, had a "repeat" instruction which required the processor to repeat the execution of the instruction following the repeat instruction for a specified number of times unless a specified condition was earlier satisfied. The same processor had a "repeat double" instruction which enabled the repeated execution of the following two (2) instructions. In both instances, having been advised in advance of the need to repeat the execution of the next instruction(s) in the instruction stream, the processor could then handle the "repeated" instructions in a special manner which made refetching unnecessary. However, in order to take advantage of this capability, the programmer or compiler had to exercize special care to detect those situations where only one (or two) instructions needed to be repeated. Perhaps more importantly, the resultant instruction sequence for such very "tight" loops differed considerably from the more general form of loops.
A variation of the "repeat" concept was implemented in the Intel 8086 microprocessor in the form of a special "prefix" which can be appended to any one of a class of instructions which manipulate "strings" of bytes or words to cause the repetition of the basic instruction a specified number of times or until a specified condition is satisfied. Besides being subject to the same limitations and objections as the original repeat technique, the prefix form was restricted to a very small subset of the instructions otherwise available for use in the general form of loops.
In summary, although substantially all data processors have the capability of executing loops of instructions of arbitrary size, no known data processor has the capability of independently detecting in the instruction stream each instruction loop which is of sufficiently small size as to fit within the internal instruction handling capability of the processor, and then automatically repeating the execution of that loop of instructions without fetching such instructions from memory each time the loop is repeated.